from faker import Faker


class TestDataGenerator:
    """生成随机的测试数据"""
    def __init__(self):
        self.fake = Faker(locale='zh_CN')  # 设置 Faker 使用中文

    def generate_chinese_name(self, count=1):
        """
        生成随机的中文姓名
        """
        return [self.fake.name() for _ in range(count)] if count > 1 else self.fake.name()

    def generate_chinese_id_card(self, count=1):
        """
        生成随机的中国身份证号码
        """
        return [self.fake.ssn() for _ in range(count)] if count > 1 else self.fake.ssn()

    def generate_chinese_bank_card(self, count=1, card_type='mastercard'):
        """
        生成随机的中国银行卡号，可指定卡类型（mastercard、visa 等）
        """
        return [self.fake.credit_card_number(card_type=card_type) for _ in
                range(count)] if count > 1 else self.fake.credit_card_number(card_type=card_type)

    def generate_chinese_phone_number(self, count=1):
        """
        生成随机的中国手机号码
        """
        return [self.fake.phone_number() for _ in range(count)] if count > 1 else self.fake.phone_number()

    def generate_email(self, count=1):
        """
        生成随机电子邮件地址
        """
        return [self.fake.email() for _ in range(count)] if count > 1 else self.fake.email()

    def generate_address(self, count=1):
        """
        生成随机的中国地址
        """
        return [self.fake.address() for _ in range(count)] if count > 1 else self.fake.address()

    def generate_company_name(self, count=1):
        """
        生成随机的公司名称
        """
        return [self.fake.company() for _ in range(count)] if count > 1 else self.fake.company()

    def generate_ip_address(self, count=1):
        """
        生成随机 IP 地址
        """
        return [self.fake.ipv4() for _ in range(count)] if count > 1 else self.fake.ipv4()


# 示例使用
generator = TestDataGenerator()
print(generator.generate_chinese_name())  # 生成一个随机姓名
print(generator.generate_email(3))  # 生成 3 个随机邮件地址
print(generator.generate_address())  # 生成一个随机地址
print(generator.generate_chinese_id_card())  # 生成一个随机身份证号码
print(generator.generate_chinese_bank_card())  # 生成一个随机银行卡号
print(generator.generate_chinese_phone_number())  # 生成一个随机中国手机号
print(generator.generate_company_name())  # 生成一个随机公司名称
print(generator.generate_ip_address())  # 生成一个随机IP地址
